;(function () {
  var A = /** @class */ (function () {
    function A(name) {
      this.name = name
    }
    return A
  })()
  // class B{
  //   a: any
  //   constructor() {
  //     this.a = new A().name
  //   }
  // }
  // class C {
  //   a: any
  //   constructor() {
  //     this.a = new A().name
  //   }
  // }
  /* 这种方式属于强耦合 A动了  BC类斗得跟着改 */
  var C = /** @class */ (function () {
    function C(name) {
      this.name = name
    }
    return C
  })()
  //创建一个容器用于收集依赖
  var Container = /** @class */ (function () {
    function Container() {
      this.mo = {}
    }
    Container.prototype.provide = function (key, mo) {
      this.mo[key] = mo
    }
    Container.prototype.get = function (key) {
      return this.mo[key]
    }
    return Container
  })()
  var mo = new Container()
  mo.provide('a', new A('猪八戒'))
  mo.provide('c', new A('孙悟空'))
  var B = /** @class */ (function () {
    function B(mo) {
      this.a = mo.get('a')
      this.c = mo.get('c')
    }
    return B
  })()
  console.log(B)
})()
